# -*- coding: utf-8 -*-
# @Time : 2025/10/31 15:22:29
# @Desc : 自动生成file_version_info.txt
# @Author : Sean
# @File   : build_file_version_info.py

from config.config import Config
from utils.common import get_resource_path


def build_file_version_info():
    filevers_info = tuple(map(int, Config.appVersion.split(".")))
    text = f"""# ----------------------------------------------------------
#  Windows VS_VERSION_INFO 模板
#  保存为 file_version_info.txt 后供 PyInstaller 使用
#  所有含 <> 的字段请按需要替换；<...> 符号本身要去掉
#  示例:版本号 3.0.1.100
# ----------------------------------------------------------

VSVersionInfo(
    ffi=FixedFileInfo(
        # 文件版本号（四段数字，每段 0-65535）
        filevers={filevers_info},
        # 产品版本号（可以和 filevers 一样，也可以不同）
        prodvers={filevers_info},
        # 文件标志位，0x0 即可
        mask=0x3f,
        flags=0x0,
        # 文件操作系统类型：0x4 = Windows NT
        OS=0x4,
        # 文件类型：0x1 = 应用程序；0x2 = 动态库
        fileType=0x1,
        # 子类型：0x0 = 不适用
        subtype=0x0,
        # 时间戳，0 表示由系统填充
        date=(0, 0)
    ),
    kids=[
        StringFileInfo(
        [
        StringTable(
            # 语言编码 + 代码页：0409 表示美式英语，04b0 表示 Unicode
            u'080404b0',
            [
            StringStruct(u'CompanyName',      u'{Config.appDeveloper}'),
            StringStruct(u'FileDescription',  u'{Config.description}'),
            StringStruct(u'FileVersion',      u'{Config.appVersion}'),
            StringStruct(u'InternalName',     u'{Config.appPackage}'),
            StringStruct(u'LegalCopyright',   u'{Config.copyRigth}版权所有'),
            StringStruct(u'OriginalFilename', u'{Config.appPackage}.exe'),
            StringStruct(u'ProductName',      u'{Config.appName}'),
            StringStruct(u'ProductVersion',   u'{Config.appVersion}'),
            # 以下两项可选，不需要可整行删除
            StringStruct(u'Comments',         u'请勿用于违法用途，使用该软件即表示同意本软件条款。'),
            StringStruct(u'WebSite',          u'{Config.appHome}')
            ])
        ]),
        VarFileInfo([VarStruct(u'Translation', [0x0804, 0x04b0])])
    ]
)"""
    with open(get_resource_path("file_version_info.txt"), "w+", encoding="utf-8") as f:
        f.write(text)


build_file_version_info()
